System and method for implementing a generic enhanced network driver

ABSTRACT

A software package for operating on a network including a plurality of network hardware devices comprises at least one networking protocols to transmit and receive data packets over the network, a hardware device driver coupled to the network hardware devices, an enhanced network driver coupled to the hardware device driver to transmit and receive the data packets using the network hardware devices and a control interface to transmit and receive control information to and from the hardware device driver. The enhanced network driver and control interface being portable to multiple network hardware devices.

BACKGROUND INFORMATION

[0001] A computer network is simply a group of two or more computersthat are linked together. Many types of networks exist, but the mostcommon types of networks are Local-Area Networks (LANs) and Wide-AreaNetworks (WANs). In a LAN computers are connected within a “local” area,for example, a home or office. A LAN in a home or small office mayinterconnect a few computers, whereas in the case of a large office orindustrial complex, the LAN may include hundreds or even thousands ofinterconnected computers. In a WAN, the interconnected computers aregenerally farther apart and are connected via telephone/communicationlines, radio waves, or other means of communication. There are alsoother network devices, for example, bridges, routers and switches, whichmay be used to link different networks or network segments into a largernetwork with more resources.

[0002] Each of these networks and network segments may have apeer-to-peer arrangement where each computing device is interconnectedwith the others on the network, or in a client/server arrangement whereindividual personal computers (PCs) log onto a server device.Additionally, a network is not limited to computers, but may alsoinclude other types of hardware devices and information services, forexample, the bridges, routers and switches described above, printers,copiers and shared Internet connections. A network allows each of theusers to interconnect with the other devices and services on the networkfor purposes such as application and file sharing, printer access,electronic mail and Internet access.

[0003] In a heterogeneous environment, such as a computer network, it isessential that each of the interconnected devices be able to receiveinformation from and transmit information to the other devices in thenetwork. The information transferred between network devices isgenerally referred to as data packets or packets and this transfer ofinformation is generally referred to as packet flow. In response to theneed for the different devices to communicate, standards bodies andother entities have developed numerous protocols for data packet flowover a network. A protocol specifies a common set of rules for packetformat and packet flow, allowing a variety of devices to communicate. Alayering model is the most common manner of dividing a protocol intosubparts. The idea behind layering is that each layer is responsible forproviding a service to the layer above by using the services of thelayer below. Each layer communicates with its peer layer in anothernetwork node through the use of the protocol.

[0004] Generally, a data packet contains a destination address that isassociated with one or more of the network devices. As the data packettravels through the network, the network routing devices are able toroute the data packet to the correct destination or destinations basedon the address. A network driver is an important piece of softwarebecause it is the interface between the network software and a hardwaredevice. The network driver allows the upper level layers to interfacewith the hardware devices for control purposes, for example, the settingof registers in the hardware device, and also contains addressinginterfaces information which allows the data packets to be transmittedto the hardware device.

[0005] However, since the network driver contains information forcontrol of a particular hardware device, it is not transportable toother devices. Every network device needs an individual network driverconfigured for that particular hardware device. Additionally, theindividual developing software code for the network driver needsintimate knowledge of both the hardware device and the network software.Thus, a hardware device manufacturer developing a network driver that isspecific to its particular hardware device has, as an added level ofcomplication, the need to understand the network software for any typeof network in which the hardware device may be connected. In contrast,network software developers understand the network software, but are notintimately familiar with all the features of various hardware deviceswhich may be connected to the network.

SUMMARY OF THE INVENTION

[0006] The present invention is directed to a software package foroperating on a network including a plurality of network hardwaredevices. The software package includes at least one networking protocolto transmit and receive data packets over the network. The softwarepackage further includes a hardware device driver communicativelycoupled to the network hardware devices, an enhanced network drivercommunicatively coupled to the hardware device driver to transmit andreceive the data packets using the network hardware devices and acontrol interface to transmit and receive control information to andfrom the hardware device driver. The enhanced network driver and thecontrol interface being portable to all of the network hardware devices,without regard for the type of the network hardware device.

BRIEF DESCRIPTION OF DRAWINGS

[0007]FIG. 1 shows an exemplary network on which the present inventionmay be implemented;

[0008]FIG. 2 shows an exemplary look-up table according to the presentinvention;

[0009]FIG. 3 shows a block diagram of an exemplary embodiment of anenhanced network driver according to the present invention;

[0010]FIG. 4 shows a block diagram of an exemplary data packet transferbetween network devices according to the present invention;

[0011]FIG. 5a shows an exemplary control process for the receiptprocessing of a data packet by an enhanced network driver according tothe present invention;

[0012]FIG. 5b shows an exemplary control process for the transmissionprocessing of a data packet by an enhanced network driver according tothe present invention;

[0013]FIG. 6 shows a block diagram of an exemplary embodiment of anapplication program interface according to the present invention;

[0014]FIG. 7 shows an exemplary process for control of a network deviceaccording to the present invention;

[0015]FIG. 8 shows a block diagram of an exemplary network according tothe present invention;

[0016]FIG. 9 shows a block diagram of an exemplary data packet transferbetween network devices according to the present invention;

DETAILED DESCRIPTION

[0017] The present invention may be further understood with reference tothe following description and the appended drawings, wherein likeelements are provided with the same reference numerals. Initiallyreferring to FIG. 1 there is illustrated an exemplary network 1 on whichthe present invention may be implemented. Network 1 includes six networksegments 10-60 each of which has a network bus 11-61 to which variousnetwork devices are connected. Network segment 10 has server 15connected to bus 11. Network segment 20 has printers 25-26 connected tobus 21. Network segment 30 has personal computers (PCs) 35-36 connectedto bus 31. Similarly, network segments 40-60 have PCs connected to theirbuses. In the exemplary network 1 of FIG. 1, all of network segments10-60 are linked via ports of network switch 70 allowing all the networkhardware devices to interconnect with any other hardware device on anyof network segments 10-60. Those skilled in the art will understand thatnetwork 1 is only exemplary and that the present invention may beapplied to any network topology, for example, star, bus, ring, etc. andis also not limited by the number or type of hardware devices on thenetwork. For example, the present invention may be implemented on anetwork comprising only one of the network segments described above orit may be implemented on a network having multiple switches, bridges androuters which allow the network to have hundreds or thousands ofconnected hardware devices.

[0018] When network 1 is physically connected, the various networkhardware devices can begin sending data packets to other networkhardware devices. As described above, this communication is controlledvia a protocol which specifies a common set of rules for packet formatand packet flow. This protocol is implemented via the network softwarewhich is resident on various network hosts which may include theconnected hardware devices. The network software controls the packetflow through the network. Throughout this specification the termsnetwork software and protocol may be used interchangeably to describethe implementation of this common set of rules for packet format andpacket flow and also for network applications such as STP (Spanning TreeProtocol) and SNMP (Simple Network Management Protocol). STP preventsloops in switched networks and SNMP allows network devices such asswitches and routers to be configured and monitored by any host on theLAN.

[0019] One common protocol is the TCP/IP (Transmission ControlProtocol/Internet Protocol) protocol suite. The TCP/IP protocol suiteincludes many different protocols, including SMTP (Simple Mail TransferProtocol) and FTP (File Transfer Protocol). In general, TCP handlespacket flow between devices and systems and IP handles the addressing ofpackets. In a network that uses IP, the network devices are identifiedby unique numbers which are known as IP addresses. These IP addressesallow the data packets to be routed or switched to the correct devices.Those skilled in the art will understand that the present invention isnot limited to any particular type of network software or protocol andmay be applied to any networking protocol.

[0020] For example, PC 56 on network segment 50 may receive a requestfor a data packet from PC 57 which is also on network segment 50. Eachof PCs 56 and 57 will have a unique address and therefore PC 56 willknow where to send the data packet. This destination address will beadded to or encoded on the data packet and then the network softwarewill send the data packet to the correct destination, in this case PC57. Those skilled in the art will understand that different networkprotocols perform addressing in different manners and that data packetsmay be encoded with more information than the destination address, forexample, the source address, protocol type, etc. The present inventionmay be implemented on any network regardless of the manner of addressingor encoding of the data packets.

[0021] Another example of network software sending data packets throughthe network may be when PC 56 requests a web page for display on itsscreen. PC 56 may have, for example, a web browser that generates arequest for a particular web page. The request is in the form of a datapacket or packets that have the ultimate destination of a web server,which, in the case of network 1 is resident on switch 70. The datapacket request is encoded by the network software including thedestination address of switch 70 and then the data packet is sent out onbus 51. Switch 70 receives the data packet and the network softwarepasses the data packet request to the web server. The web serverprocesses the requests and sends the requested web page, in the form ofdata packets, out the correct port of switch 70 back to PC 56, which maythen display the web page. The flow of the data packets within thenetwork software will be described in greater detail below.

[0022] One manner in which switch 70 may determine which of its ports adata packet should be sent out on is through the use of a look-up tablethat contains specific addressing information. For example, the look-uptable of switch 70 may store various destination addresses, includingthe destination addresses for PC 47 and PC 56. These destinationaddresses may be linked to the corresponding port numbers of switch 70.Therefore, when switch 70 transmits a data packet to a destinationaddress, it accesses the look-up table to determine the transmissionport corresponding to the destination address. The addresses in thelook-up table may be programmed into switch 70, or after a series ofdata packet transmissions, switch 70 may learn the addresses and createor fill-in the look-up table on its own. This process will be describedin more detail below.

[0023]FIG. 2 shows exemplary look-up table 100 that may be implementedin switch 70 according to the present invention. Look-up table 100 hastwo columns, port column 101 corresponding to the port numbers of switch70 and addresses column 102 corresponding to the addresses of thehardware devices connected to the port. In exemplary look-up table 100,the hardware addresses have been simplified to be a single letterfollowed by a number in parenthesis where the number corresponds to thenumber of the hardware device in FIG. 1. For example, server 15 of FIG.1, is connected to port 111 of switch 70 and has an address of A(15).Similarly, PC 56 is connected to port 151 of switch 70 and has anaddress of E(56). Thus, in the example above, when switch 70 transmitsthe data packets for display of the web page to PC 56, switch 70determined through look-up table 100 that the destination address on thedata packet corresponded to port 151. The data packet was thentransmitted via port 151 of switch 70 to PC 56. Those skilled in the artwill understand that the addresses in look-up table 100 are onlyexemplary and that different protocols may have different manners ofassigning addresses and also that a look-up table may contain much moreinformation than illustrated in look-up table 100 of FIG. 2.

[0024] As described above, a layering model is the most common manner ofdividing or separating a protocol into functional units. The theorybehind layering is that each layer is responsible for providing aservice to the layer above by using the services of the layer below.Each layer communicates with its peer layer in another network node (ordevice) through the use of the protocol. When a layer wishes to transferinformation in a data packet to its peer layer in another network node,the layer adds (or encapsulates) that information to the data packet andpasses the data packet to the layer below. This lower layer may alsoencapsulate additional information on the data packet that it istransmitting to its peer layer in the other network node. This continuesdown through the layers until the data packet reaches the lowest layer,which actually passes the data packet to the lowest layer of the othernetwork node. When the other network node receives the data packet, eachlayer strips away (or de-encapsulates) the information from the datapacket that was sent by its peer layer and passes the remaining data upto the next layer. In this manner each layer receives the informationfrom its peer layer.

[0025]FIG. 3 illustrates a block diagram of an exemplary embodiment ofthe present invention. FIG. 3 shows network software 210 which includesupper level layers and applications 220, Enhanced Network Driver 230 andControl Interface 240. Hardware device driver 250 is shown as beingfunctionally outside network software 210 in FIG. 3. However, thoseskilled in the art will understand that hardware device driver 250 maybe functionally contained inside or outside of network software 210.There are no specific upper level layers and applications shown in FIG.3, but those skilled in the art will understand that they may includesuch protocols as TCP, IP, UDP (User Datagram Protocol), SNMP, STP, FTP,etc. The specific network hardware device employing network software 210is not shown in FIG. 3, because those skilled in the art will understandthat the present invention may be applied to any network hardwaredevice.

[0026] Network software 210 and hardware device driver 250 manage thenetwork hardware device. As described previously, this managementincludes both control of the hardware device and the handling of thedata packets addressed to the hardware device. The exemplary embodimentof the present invention illustrated in FIG. 3 allows the separation ofthese two functions, i.e., hardware control and data packet handling.Hardware control is accomplished through control interface 240 as shownby the solid line 245 in FIG. 3 and data packet handling and addressingis accomplished through enhanced network driver 230 as shown by thephantom line 235 in FIG. 3. Each of these elements will be described ingreater detail below. This separation allows enhanced network driver 230to provide a generic packet interface between the underlying hardwareinterfaces, for example, hardware device driver 250, and upper levellayers 220 of network software 210. Since enhanced network driver 230 isgeneric and does not control any hardware, it is not tied to anyparticular hardware, and is therefore transportable to any hardwaredevice which may be included in the network.

[0027] In FIG. 3, hardware device driver 250 provides the interfacebetween network software 210 and the physical network hardware device.Hardware device driver 250 may be considered the lowest level layer inthe protocol. Generally, hardware device driver 250 provides servicessuch as the initialization of hardware and hardware support tasks,hardware management and data packet transfer. However, the specifictasks accomplished by hardware device driver 250 are highly dependent onthe underlying network hardware device. For example, when initializing ahardware device, hardware device driver 250 may set hardware controlregisters or support hardware interrupts and vectors. As a furtherexample, in the case of network switches, hardware device driver 250 maybe responsible for switch and port statistic retrieval and management.

[0028] Hardware device driver 250 also provides support routines forsending and receiving data packets. However, hardware device driver 250is only responsible for the physical transfer of the data packets.Enhanced network driver 230 is responsible for providing the commonroutines for addressing of the data packets, for example, inserting thesource address and looking up the destination address. Since hardwaredevice driver 250 is not responsible for data packet addressing, it doesnot need to include addressing functions for interface with upper levellayers 220. For example, even when included in a network implementingthe TCP/IP protocol as described above, hardware device driver 250 doesnot need to include functions for an IP network interface. Therefore,the developer of hardware device driver 250 does not need to understandhow to interface with the various network layers and the manufacturer ofthe hardware device may develop hardware device driver 250 to addressthe specific capabilities of the hardware device without regard to thespecific network software 210 which may be run on a given network towhich the hardware device may be connected. In FIG. 3, hardware devicedriver 250 is shown outside network software 210 because this embodimentof the present invention allows hardware device driver 250 to be moreclosely related to the hardware device and to operate independently ofthe network software 210. However, those skilled in the art willunderstand that the present invention may also be implemented using oneor more generic hardware device drivers incorporated within the networksoftware for certain devices in addition to such separate hardwaredevice drivers for other hardware devices. There is no requirement thateach network hardware device have an independently designed hardwaredevice driver.

[0029] Enhanced network driver 230 makes the connection between upperlevel layers 220 of network software 210 and the low level layerhardware device driver 250. Enhance network driver 230 is not designedwith an understanding of specific network hardware devices and does notdirectly touch any hardware. This allows enhanced network driver 230 tofunction as a generic interface that handles the addressing of datapackets without regard to the specific hardware device it is servicing.

[0030]FIG. 4 shows a block diagram of an exemplary data packet transferbetween network devices according to the present invention. Theexemplary data packet transfer illustrated in FIG. 4 corresponds to theexample described above where PC 56 is requesting a web page for displayon its screen. In FIG. 4, exemplary network software layers are shownincorporating exemplary embodiments of the present invention using theTCP/IP protocol to transfer the data packets between network devices. PC56 is shown having five protocol layers, where layer 250 is the hardwaredevice driver, layer 230 is the enhanced network driver, layer 260 isthe IP layer, layer 270 is the TCP layer and layer 280 is the webbrowser application. Similarly, switch 70 has five protocol layers,where layer 250′ is the hardware device driver, layer 230′ is theenhanced network driver, layer 260′ is the IP layer, layer 270′ is theTCP layer and layer 280′ is the web server application. Those skilled inthe art will understand that different protocols may have differentnumbers of layers and the five layers shown in FIG. 4 are onlyexemplary. When the user of PC 56 desires to view a particular web page,web browser 280 formats a series of data packets that represent thisrequest. The data packet is then passed to TCP layer 270 whichencapsulates the information in the data packet added by web browser 280and adds additional TCP layer 270 information, for example sequencenumbers and checksums. The data packet is then passed to IP layer 260which encapsulates all the information passed down from TCP layer 270and adds additional IP layer 260 information, for example thedestination IP address. The data packet is then passed down to enhancednetwork driver layer 230 which, once again, encapsulates the informationpassed down from IP layer 260. As described above, enhanced networkdriver layer 230 may add, for example, the source address in the formatof a Medium Access Control (MAC) address. Additionally, enhanced networkdriver layer 230 may perform a look up of the destination MAC address.The data packet is then passed to hardware device driver layer 250 whichpasses the data packet to the hardware device for physical transmission.

[0031] When switch 70 receives the data packet, it is initially passedup to hardware device driver layer 250′ which de-encapsulates the dataadded by its peer layer in PC 56, hardware device driver layer 250′, andpasses the remaining data up to enhanced network driver layer 230′.Similarly, each of the layers de-encapsulates the information added byits peer layer in PC 56 until the data packet request arrives at webserver application layer 280′ which processes the request. Uponprocessing the request, web server application layer 280′ may determine,for example, that a web page should be transmitted to PC 56. Web serverapplication layer 280′ may initiate a series of data packets thatrepresent the web page, for example, a HTML (Hyper-Text Markup Language)page. The data packets are then passed to TCP layer 270′ whichencapsulates the information in the data packet added by web serverapplication 280′ and adds additional TCP layer 270′ information. Thedata packet continues down the layers as more data is encapsulated ateach of the layers until it arrives at switch 70 hardware for physicaltransmission. When PC 56 receives the data packets they arede-encapsulated by each layer, as described above, and arrive at webbrowser 280 which processes the data packet and prepares the page fordisplay on the screen of PC 56.

[0032] In the above example, when switch 70 received the data packetfrom PC 56, enhanced network driver layer 230′ upon receipt of the datapacket may determine the port identification and source address of thedata packet. The port identification is the port on switch 70 thatreceived the data packet and the source address is the address for PC 56that may be, for example, in the format of a MAC address. In thismanner, enhanced network driver layer 230′ may learn which of the portsof switch 70 are related to the address for PC 56. Enhanced networkdriver layer 230′ may enter this information in, for example, a look-uptable as described with respect to FIG. 2. When enhanced network driverlayer 230′, later sees the same address as a destination, it may accessthis addressing information in the look-up table so that it can directthe data packet to the correct port of switch 70. The upper levellayers, for example IP layer 260′, do not need to understand portnumbers of switch 70 because the upper level layers are abstracted fromthe hardware device.

[0033]FIG. 5a shows an exemplary control process for the receiptprocessing, according to the present invention, of data packets by anenhanced network driver 230 of a switch, for example switch 70 ofFIG. 1. In step 305, the enhanced network driver 230 receives the datapacket from the receiving port through the lower level layer, forexample, the hardware device driver 250. The process then continues tostep 310 where the enhanced network driver 230 enters the source addressand port number into, for example, a look-up table. As described above,enhanced network driver 230 uses this source address and portinformation when it is transmitting data packets out of switch 70. Byextracting this addressing information, enhanced network driver 230 hasnow learned the port on which the source address resides. Therefore, ifthe network device that is the source of this particular data packetbecomes a destination for a different data packet at a later time,enhanced network driver 230 has the port information for thatdestination address. In step 315, enhanced network driver 230 identifiesthe type and protocol of the data packet. The process then continues tostep 320 wherein enhanced network driver 230 passes the data packet tothe upper level layers based on the protocol type determined in step315. For example, if enhanced network driver 230 determines that thedata packet is based on the IP protocol, it will pass the data packet tothe upper level IP layer.

[0034]FIG. 5b shows an exemplary control process for the transmissionprocessing of the data packet by the enhanced network driver 230 of aswitch, for example switch 70 of FIG. 1, according to the presentinvention. In step 330, enhanced network driver 230 receives the datapacket from upper level layers 220. The process then continues to step335 to determine whether the destination of the data packet is abroadcast. A broadcast destination means that the data packet should besent out all ports of switch 70. If the destination address is not abroadcast, the process proceeds to step 340 where enhanced networkdriver 230 determines whether the destination of the data packet is amulticast. A multicast destination means that the data packet isdestined for ports belonging to a particular multicast group. Themulticast group may, for example, include all of the ports of switch 70,which would mean that the multicast address is essentially the same as abroadcast address. However, the multicast group may also, for example,contain zero, one, or more ports of switch 70. If it was determined insteps 335 and 340 that the packet was neither a broadcast or amulticast, then the data packet is a unicast which means that itdestined for a single address out a single port of switch 70. In thiscase, the process continues to step 345, where enhanced network driver230 looks up the destination address in, for example, the look up table,to determine the port number on which the data packet should betransmitted. If the destination address is found in step 355, theprocess continues to step 365 where the port indicator is set to theport number associated with the destination address. The process thencontinues to step 370 where enhanced network driver 230 passes the datapacket with the correct port information to the lower level layer, forexample, hardware device driver 250, for transmission.

[0035] If it was determined that the data packet was addressed for amulticast in step 340, the process would continue to step 350 where theport indicator is set to all ports within the multicast group, which asdescribed above, may be any number of the ports of switch 70. Theprocess then continues to step 370 where enhanced network driver 230passes the data packet with the correct port information to the lowerlevel layer for transmission. If it was determined that the data packetwas addressed for a broadcast in step 335 or that the destinationaddress was not found in step 355, the process continues to step 360where the port indicator is set to all ports. In the case of a broadcastdata packet, the port indicator is set to all ports because the datapacket is destined for all ports. In the case of unicast data packet,enhanced network driver 230 does not know which port the data packet isdestined for, so it is sent out of all ports so that it is guaranteed toarrive at the correct destination. After the port indicator is set toall ports in step 360, the continues to step 370 where enhanced networkdriver 230 passes the data packet addressed for transmission out of allports. Those skilled in the art will understand that the above examplecontrol process included the elements of broadcast and multicast, whichare normally associated with an Ethernet-type network. However, thepresent invention is not limited to Ethernet-type networks, but may beimplemented on other network types. For example, a point to pointnetwork connection may not include broadcasting and multicasting, butthe enhanced network driver may still be implemented in such anetworking arrangement.

[0036] As can be seen from the above described example, enhanced networkdriver 230 is concerned with the addressing of data packets and thetransmission of data packets to the next highest or next lowest layer inthe protocol. The functions of the enhanced network driver 230 arecompletely independent of the hardware devices and contains no controlfunctions for such devices. Therefore, enhanced network driver 230 iscompletely transportable within the network and may be implemented withany type of hardware device.

[0037] As described above with reference to FIG. 3, network software 210not only functions to transmit and receive data packets, it alsocontrols the hardware devices. As part of this control, upper levellayers and applications 220 (as described previously, upper level layers220 is used generically to describe upper level layers of a protocol,for example IP, TCP, UDP and also upper level applications such as STP,SNMP and web browser and server applications) may receive information onthe status of the hardware device and/or change settings of the hardwaredevice. For example, upper level layers 220 may receive information onthe status of the hardware registers or may change the value of ahardware register. Similarly, when the hardware device is a networkswitch, upper level layers 220 may have access to the switch statisticalinformation or control port status. Since enhanced network driver 230 isnot involved in hardware control and hardware device driver 250 cannotdirectly interface with upper level layers 220, control interface 240 isinterposed between upper level layers 220 and hardware device driver250. Control interface 240 is an abstraction layer which allows upperlevel layers 220 to communicate control information to the hardwaredevices through hardware device driver 250. Unlike enhanced networkdriver 230, control interface 240 does not provide a network packetinterface, but is used solely for control purposes.

[0038]FIG. 6 illustrates a more detailed view of an exemplary embodimentof control interface 240 according to the present invention. Aspreviously illustrated in FIG. 3, control interface is interposedbetween upper level layers 220 and hardware device driver 250. Controlinterface 240 contains object definitions 381-396. Each of objectdefinitions 381-396 contains information about a hardware device orgroup of hardware devices, where the hardware device characteristics,for example enable and disable of a port, are referred to as objects.Those skilled in the art will understand that the use of 16 objectdefinitions are only exemplary and that object definitions 381-396 maybe standard Management Information Base (MIBs) object definitions asdefined by protocol Request for Comments (RFCs) or they may be otheruser defined object definitions as defined, for example, in anenterprise MIB. The MIBs may be, for example, those defined in RFC 1213(Management Information Base for Network Management of TCP/IP-basedinternets: MIB-II), RFC 1493 (Definitions of Managed Objects forBridges), RFC 1515 (Definitions of Managed Objects for IEEE 802.3 MediumAttachment Units), or RFC 1757 (Remote Network Monitoring ManagementInformation Base).

[0039] The information stored in object definitions 381-396 is definedin a generic manner, for example, according to the standard orenterprise MIB object definitions. Thus, a limited number of objectdefinitions may be able to include information about numerous hardwaredevices. Similar to enhanced network driver 230, control interface 240is device-independent and fully transportable between network hardwaredevices because these limited number of object definitions include allof the information required in regard to any class of network device.There may be some instances in which the existing standard or enterpriseobject definition does not include the required information about aparticular hardware device, but in these cases the structure for theobject definitions follows defined standards so that the systemdeveloper can easily transfer the required information into a new objectdefinition that a hardware device driver developer can support asrequired.

[0040] As part of an initial setup or during runtime operation, controlinterface 240 determines the objects (network devices) for which it willact as an interface. Control interface 240 then knows the correct objectdefinitions to access when it needs to interface with a particularhardware device. When upper level layers 220 send a request for hardwareinformation, for example, the state of a particular register, thisrequest is processed through control interface 240. When the request isreceived by control interface 240, it accesses the correct objectdefinition so that it can communicate the request to hardware devicedriver 250 which checks the status of the register and transfers theinformation back to control interface 240. This information is recordedin the object definition for communication back to upper level layers220. Likewise, other control information may be retrieved or sent fromupper level layers 220 to a particular hardware device through controlinterface 240.

[0041]FIG. 7 shows an exemplary process for control of a network deviceusing an control interface according to the present invention. In step400, the upper level layers 220 determine that a control function shouldbe carried out on a particular hardware device. Control functionsincluding, for example, the setting of hardware registers or thequerying of a switch device for switch statistics. In step 405, theupper level layers 220 send the control request to the control interface240 which accesses the specific object definition corresponding to theselected hardware device. As described above, during the initial setupof control interface 240 or during runtime operation, it determines thecorrect object definition to use for the network hardware device it willbe servicing. This setup may be manual by the individual building thenetwork or the control, the control interface 240 may query each of thehardware devices to determine the correct object definitionscorresponding to the various network devices. The process then continuesto step 410, where, through the use of the object definition, thecontrol interface 240 passes the request to the device hardware devicedriver 250 which performs the requested control function on the hardwaredevice in step 415. If the hardware device needs to communicateinformation back to the upper level layers 220, for example, the stateof a register or some switching statistics, the process is carried outin the reverse order. But, in either case, the control interface 240provides the necessary communication interface between the hardwaredevice driver 250 and the upper level layers 220.

[0042]FIG. 8 shows a block diagram of an exemplary network 500 accordingto the present invention. In FIG. 8 there are two Ethernet LANs 501 and502 that are connected via router 560. Network hardware devices 510-530are connected to Ethernet LAN 501 and network hardware devices 540-550are connected to Ethernet LAN 502. Router 560 allows network hardwaredevices 510-530 to communicate with network hardware devices 540-550.Those skilled in the art will understand that network hardware devices510-550 may be any type of hardware device that can be connected to anetwork including, for example, a PC, a printer, an internet appliance,any devices capable of accepting a network interface card (NIC), etc.

[0043] An example of data packet transfer in network 500 may be whennetwork hardware device 510 on Ethernet LAN 501 wishes to transmit adata packet to network hardware device 550 on Ethernet LAN 502. IfEthernet LANs 501 and 502 implement the TCP/IP protocol suite, the datapacket will be addressed with an IP address. The network software ofnetwork hardware device 510 should recognize that the IP address ofnetwork hardware device 550 is not contained in the same LAN, andtherefore the data packet should be passed to router 560. Networkhardware device 510 will encode both the destination IP address (fornetwork hardware device 550) and the MAC address for router 560 becausethe packet must pass through router 560 on its path to network hardwaredevice 550. The data packet is then sent out of the port of router 560connected to Ethernet LAN 502 and the packet is received at thedestination, network hardware device 550.

[0044]FIG. 9 shows a block diagram, similar to FIG. 4, of the exemplarydata packet transfer between network devices 510 and 550, as describedabove, according to the present invention. Each of network hardwaredevices 510, 550 and 560 are shown having multiple protocol layers610-650. For example, router 560 has hardware device driver 610′,enhanced network driver 620′, IP layer 630′, TCP layer 640′ andapplication layer 650′. Once again, those skilled in the art willunderstand that there may be other layers and the layers selected forFIG. 9 are only exemplary. Application layer 650 of network hardwaredevice 510 may, for example, encode information into a data packet andpass this data packet to TCP layer 640 which encapsulates theinformation in the data packet added by application layer 650 and addsadditional TCP layer 640 information. The data packet is then passed toIP layer 630 which encapsulates all the information passed down from TCPlayer 640 and adds additional IP layer 630 information, for example thedestination IP address of network hardware device 550 and MAC address ofrouter 560. The data packet is then passed down to enhanced networkdriver 620 which, once again, encapsulates the information passed downfrom IP layer 630 and also may add, for example, the source IP addressand perform a look up of the destination IP addresses. The data packetis then passed to hardware device driver layer 610 which passes the datapacket to network hardware device 510 for physical transmission.

[0045] When router 560 receives the data packet, it is initially passedup to hardware device driver 610′ which de-encapsulates the data addedby its peer layer in network hardware device 510, hardware device driver610, and passes the remaining data up to enhanced network driver 620′.At this point, enhanced network driver 620′ may determine the portidentification and source MAC address of the data packet and enter thisinformation into, for example, its look-up table for future use.Enhanced network driver 620′ may also look up the destination MACaddress in, for example, a look-up table so that the data packet may berouted out the correct port of router 560, i.e., the port connected toEthernet LAN 502. The data packet then continues to IP layer 630′ sothat additional information may be added to route the data packet to thecorrect final destination. The data packet may then continue up thelayers of router 560, if these other layers have information that needsto be added to the data packet, or it may be ready to be passed backdown to enhanced network driver 620′ and then to network device driver610′ and, finally, to router 560 for physical transmission. When thedata packet arrives at network hardware device 550, each of the layersde-encapsulates the information added by its peer layers.

[0046] As described above, enhanced network drivers 620 are genericpacket interfaces between the underlying hardware interfaces, hardwaredevice drivers 610, and the upper level layers and applications.Therefore, each of enhanced network drivers 620 are the same for allnetwork hardware devices 510, 550 and 560. Hardware device drivers 610may be specific to the particular hardware device it is controlling orit may be a generic hardware device driver provided with the networksoftware. For example, hardware device driver 610′ for router 560 mayhave been developed by the manufacturer of router 560 to mostefficiently use all the capabilities of router 560. On the other hand,hardware device driver 610′ may be a generic hardware device driverprovided with the network software. In either case, it does not effectthe enhanced network driver 620′, a control interface (not shown), orthe upper level layers because these modules are generic and independentof the hardware device drivers. Thus, at a later time, the networkadministrator may install a hardware device driver that is specific torouter 560 without making any adjustments to enhanced network driver620′ or the control interface (not shown). Similarly, a new networkdevice may be easily installed because the enhanced network driver andcontrol interface are transportable to any type of device.

[0047] In the preceding specification, the present invention has beendescribed with reference to specific exemplary embodiments thereof. Itwill, however, be evident that various modifications and changes may bemade thereunto without departing from the broadest spirit and scope ofthe present invention as set forth in the claims that follow. Thespecification and drawings are accordingly to be regarded in anillustrative rather than restrictive sense.

1-32. canceled
 33. A network switch, comprising: a look-up table; and anenhanced network driver receiving a first data packet received by thenetwork switch from a network device and determining a port number ofthe network switch which received the first data packet and an addressof the network device from the first data packet, the enhanced networkdriver storing the port number and the corresponding address in thelook-up table, and wherein the enhanced network driver, when receiving asecond data packet to be transmitted to the network device, determinesthe port number from which the second data packet is transmitted basedon the address included in the second data packet and the correspondingport number stored in the look-up table for the address.
 34. The networkswitch according to claim 33, wherein the address is the MAC address ofthe network device.
 35. The network switch according to claim 33,wherein the enhanced network driver receives the first data packet froma network driver for the network switch.
 36. The network switchaccording to claim 33, wherein the enhanced network driver receives thesecond data packet from an upper level layer of the network switch. 37.The network switch according to claim 33, wherein the address of thenetwork device is determined by extracting the address from the firstdata packet.
 38. The network switch according to claim 33, wherein theenhanced network driver identifies a protocol of the first data packetand the first data packet is sent to an upper level layer based on theprotocol.
 39. The network switch according to claim 33, wherein theenhanced network driver sets a port indicator to the port numbercorresponding to the address.
 40. The network switch according to claim33, wherein, when the look-up table does not include a correspondingport number for the address, the enhanced network driver sets a portindicator to all port numbers of the network switch.
 41. The networkswitch according to claim 33, wherein the network switch is anEthernet-type switch.
 42. A network device, comprising: an enhancednetwork driver receiving a data packet from upper level layers,inserting a source address in the data packet and determining thedestination address for the data packet, the enhanced network driverbeing independent of any hardware services for the network device; and acontrol interface communicating control information from the upper levellayers to a hardware device driver, the control interface beingindependent of any data packets in the network device and including aplurality of object definitions.
 43. The network device of claim 42,wherein each of the object definitions is one of a ManagementInformation Base object definition and a user defined object definition.44. The network device of claim 42, wherein the communication of thecontrol information by the control interface includes receiving arequest from the upper level layers, accessing the object definitioncorresponding to a hardware device included in the request and passingthe request to the hardware device driver.
 45. The network device ofclaim 44, wherein the communication of the control information furtherincludes receiving a response to the request from the hardware devicedriver and passing the response to the upper level layers.
 46. Thenetwork device of claim 42, wherein the network device is one of anetwork switch, a network interface card, a router, an internetappliance and a personal computer.
 47. A method for processing a datapacket, comprising the steps of: receiving the data packet at a hardwaredevice driver; passing the data packet to an enhanced network driver,the enhanced network driver being independent of any hardware devicefunctionality; processing the data packet by the enhanced networkdriver, the processing including the determining of a source address ofthe data packet and a port number of a hardware device which receivedthe data packet; storing the source address and the corresponding portnumber in a look-up table; identifying a protocol type of the datapacket; and passing the data packet to an upper level layer based on theidentified protocol type.
 48. The method of claim 47, wherein the sourceaddress is a MAC address.
 49. The method of claim 47, further comprisingthe steps of: receiving a second data packet at the enhanced networkdriver from one of the upper level layers; determining if the seconddata packet has a broadcast destination; and addressing the second datapacket to be transmitted from all data ports of the hardware device. 50.The method of claim 49, further comprising the steps of: determining adestination address of the second data packet; determining if thedestination address is stored as a source address in the look-up table;and directing the second data packet to the port number corresponding tothe source address in the look-up table when the destination addressmatches the source address.
 51. The method of claim 47, wherein theprotocol type is an Internet Protocol.